|
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ОТДЕЛ Упорядочивание+;
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(* НАЗНАЧЕНИЕ: проверка упорядочивания рядов *)
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ИСПОЛЬЗУЕТ
Вставкой,
Вставкой2,
Выбором,
Обменом,
ОбменомБ,
Матем ИЗ "...\Отделы\Числа\",
ОС ИЗ "...\Отделы\Обмен\",
Вывод ИЗ "...\Отделы\Обмен\";
ПОСТ
(* алгоритмы упорядочивания *)
упВставкой = 0;
упВставкой2= 1;
упВыбором = 2;
упОбменом = 3;
упОбменомБ = 4;
(* число повторов упорядочивания короткого ряда *)
Повторов = 10000;
ПЕР
короткийРяд:РЯД 30 ИЗ ЦЕЛ;
длинныйРяд :РЯД 30000 ИЗ ЦЕЛ;
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Вывести(ряд+:РЯД ИЗ ЦЕЛ);
(* вывод на экран всех слагаемых ряда *)
ПЕР
поз:ЦЕЛ;
УКАЗ
ОТ поз:=0 ДО РАЗМЕР(ряд)-1 ВЫП
Вывод.ЧЦел("%d ",ряд[поз],0,0,0)
КОН;
Вывод.Цепь("^")
КОН Вывести;
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Заполнить(ряд+:РЯД ИЗ ЦЕЛ);
(* заполнение ряда случайными числами *)
ПЕР
поз:ЦЕЛ;
УКАЗ
ОТ поз:=0 ДО РАЗМЕР(ряд)-1 ВЫП
ряд[поз]:=УЗК(ВШИРЦЕЛ(Матем.случ()*РАЗМЕР(ряд)))
КОН
КОН Заполнить;
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Испытание(Алгоритм:ЗАДАЧА(ряд+:РЯД ИЗ ЦЕЛ));
(* испытание заданного алгоритма упорядочивания *)
ПЕР
повтор:ЦЕЛ;
начВремя,время:ЦЕЛ;
УКАЗ
(* одинаковая последовательность случайных чисел *)
Матем.случ0(0);
(* повторяем упорядочивание малого ряда *)
время:=0;
ОТ повтор:=1 ДО Повторов ВЫП
Заполнить(короткийРяд);
начВремя:=ОС.Время();
Алгоритм(короткийРяд);
УВЕЛИЧИТЬ(время,ОС.Время()-начВремя)
КОН;
Вывод.ЧЦел("%d рядов из %d целых чисел за %dмс^",Повторов,РАЗМЕР(короткийРяд),время,0);
Вывести(короткийРяд);
(* упорядочиваем большой ряд *)
Заполнить(длинныйРяд);
начВремя:=ОС.Время();
Алгоритм(длинныйРяд);
время:=ОС.Время() - начВремя;
Вывод.ЧЦел("ряд из %d целых чисел за %dмс^",РАЗМЕР(длинныйРяд),время,0,0)
КОН Испытание;
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Испытания;
(* испытание всех алгоритмов упорядочивания *)
ПЕР
алгоритм:ЦЕЛ;
УКАЗ
ОТ алгоритм:=упВставкой ДО упОбменомБ ВЫП
ВЫБРАТЬ алгоритм ИЗ
| упВставкой:
Вывод.Цепь("^Упорядочивание простой вставкой^");
Испытание(Вставкой.Упорядочить)
| упВставкой2:
Вывод.Цепь("^Упорядочивание двоичной вставкой^");
Испытание(Вставкой2.Упорядочить)
| упВыбором:
Вывод.Цепь("^Упорядочивание простым выбором^");
Испытание(Выбором.Упорядочить)
| упОбменом:
Вывод.Цепь("^Упорядочивание простым обменом^");
Испытание(Обменом.Упорядочить)
| упОбменомБ:
Вывод.Цепь("^Упорядочивание быстрым обменом^");
Испытание(ОбменомБ.Упорядочить)
ИНАЧЕ
КОН
КОН
КОН Испытания;
(*────────────────────────────────────────────────────────────────────────────*)
УКАЗ
Испытания
КОН Упорядочивание.
▲ Вопросы , замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
|
|